import java.util.Scanner;

public class 身份证号 {
    /*
* 1.         模拟审核身份证的过程，按照以下要求实现相关代码（友情提示：不一定要用正则）（8分）
                a.提示用户在控制台输入身份证号，用一个字符串对其进行保存（2分）
                        1.创建扫描器对象Scanner
                        2.用String line保存
                b.判断该身份证号位数是否是18位或者16位（2分）
                        1.取字符长度，用变量保存，方便后边使用，并判断是否是18或16位
                c.判断该身份证号除最后一位外，是否都是数字（2分）
                        1.利用身份证长度变量取出身份证前边的字符串
                        2.把取出身份证号字符串用Long.parseLong()转换，把语句try 起来，没报错说明全是数字，报错提示用户重新输出
                d.将“410124199008010231”身份证号中生日（19900801）获取出来并且打印到控制台上（2分）
                        1.因为身份证好从第7位开始8个字符串是身份证中的生日，直接用substring取出打印即可

*/
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的身份证号：");
        String idCard = sc.nextLine();

        //定义一个变量接收身份证号的长度
        int leng = idCard.length();

        //判断身份证号的长度是否是18
        if (leng != 18) {
            System.out.println("“长度不符合身份证号标准");
            System.exit(-1);
        }

        //String ai = idCard.substring(0, 17);

        //遍历这个字符串
        for (int i = 0; i < idCard.length(); i++) {
            //获取到字符串最后的那个元素
            char c = idCard.charAt(idCard.length() - 1);
            //判断前17位是否是0-9之间的数字
            if (i != idCard.length() - 1 && (idCard.charAt(i) > '9' || idCard.charAt(i) < '0')) {
                System.out.println("内容不符合标准");
                return;
                //判断最后一位是否是x
            } else if (c != 'x' && (c > '9' || c < '0')) {
                System.out.println("内容不符合标准");
                return;
            }
        }

        //截取生日的字段
        String year = idCard.substring(6, 10);
        String month = idCard.substring(10, 12);
        String day = idCard.substring(12, 14);

        //输出语句
        System.out.println("你的出生日期是" + year + "年" + month + "月" + day + "日");


    }
}
